home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / html / FrameView.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  5.5 KB  |  227 lines

  1. package javax.swing.text.html;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Dimension;
  6. import java.awt.Graphics;
  7. import java.awt.Insets;
  8. import java.awt.Shape;
  9. import java.io.IOException;
  10. import java.net.MalformedURLException;
  11. import java.net.URL;
  12. import javax.swing.JEditorPane;
  13. import javax.swing.JScrollPane;
  14. import javax.swing.JViewport;
  15. import javax.swing.border.Border;
  16. import javax.swing.event.DocumentEvent;
  17. import javax.swing.event.HyperlinkEvent;
  18. import javax.swing.event.HyperlinkListener;
  19. import javax.swing.event.HyperlinkEvent.EventType;
  20. import javax.swing.text.AttributeSet;
  21. import javax.swing.text.ComponentView;
  22. import javax.swing.text.Element;
  23. import javax.swing.text.JTextComponent;
  24. import javax.swing.text.View;
  25. import javax.swing.text.ViewFactory;
  26. import javax.swing.text.html.HTML.Attribute;
  27.  
  28. class FrameView extends ComponentView implements HyperlinkListener {
  29.    JEditorPane htmlPane;
  30.    JScrollPane scroller;
  31.    boolean editable;
  32.    float width;
  33.    float height;
  34.    URL src;
  35.  
  36.    public FrameView(Element var1) {
  37.       super(var1);
  38.    }
  39.  
  40.    public void changedUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  41.       Element var4 = ((View)this).getElement();
  42.       AttributeSet var5 = var4.getAttributes();
  43.       URL var6 = this.src;
  44.       String var7 = (String)var5.getAttribute(Attribute.SRC);
  45.       URL var8 = ((HTMLDocument)var4.getDocument()).getBase();
  46.  
  47.       try {
  48.          this.src = new URL(var8, var7);
  49.          if (var6.equals(this.src)) {
  50.             return;
  51.          }
  52.  
  53.          this.htmlPane.setPage(this.src);
  54.          HTMLDocument var9 = (HTMLDocument)this.htmlPane.getDocument();
  55.          var9.setFrameDocumentState(true);
  56.       } catch (MalformedURLException var10) {
  57.       } catch (IOException var11) {
  58.       }
  59.  
  60.    }
  61.  
  62.    protected Component createComponent() {
  63.       Element var1 = ((View)this).getElement();
  64.       AttributeSet var2 = var1.getAttributes();
  65.       String var3 = (String)var2.getAttribute(Attribute.SRC);
  66.       if (var3 != null && !var3.equals("")) {
  67.          try {
  68.             URL var4 = ((HTMLDocument)var1.getDocument()).getBase();
  69.             this.src = new URL(var4, var3);
  70.             this.htmlPane = new JEditorPane(this.src);
  71.             this.htmlPane.addHyperlinkListener(this);
  72.             this.htmlPane.setEditable(this.editable);
  73.             HTMLDocument var5 = (HTMLDocument)this.htmlPane.getDocument();
  74.             var5.setFrameDocumentState(true);
  75.             this.setMargin();
  76.             this.createScrollPane();
  77.             this.setBorder();
  78.          } catch (MalformedURLException var6) {
  79.             ((Throwable)var6).printStackTrace();
  80.          } catch (IOException var7) {
  81.             ((Throwable)var7).printStackTrace();
  82.          }
  83.       }
  84.  
  85.       return this.scroller;
  86.    }
  87.  
  88.    private void createScrollPane() {
  89.       AttributeSet var1 = ((View)this).getElement().getAttributes();
  90.       String var2 = (String)var1.getAttribute(Attribute.SCROLLING);
  91.       if (var2 == null) {
  92.          var2 = "auto";
  93.       }
  94.  
  95.       if (!var2.equals("no")) {
  96.          if (var2.equals("yes")) {
  97.             this.scroller = new JScrollPane(22, 32);
  98.          } else {
  99.             this.scroller = new JScrollPane();
  100.          }
  101.       } else {
  102.          this.scroller = new JScrollPane(21, 31);
  103.       }
  104.  
  105.       JViewport var3 = this.scroller.getViewport();
  106.       ((Container)var3).add(this.htmlPane);
  107.       var3.setBackingStoreEnabled(true);
  108.       this.scroller.setVisible(false);
  109.       this.scroller.setMinimumSize(new Dimension(5, 5));
  110.       this.scroller.setMaximumSize(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
  111.    }
  112.  
  113.    public float getMaximumSpan(int var1) {
  114.       return (float)Integer.MAX_VALUE;
  115.    }
  116.  
  117.    public float getMinimumSpan(int var1) {
  118.       return 5.0F;
  119.    }
  120.  
  121.    private JEditorPane getOutermostJEditorPane() {
  122.       View var1 = ((View)this).getParent();
  123.  
  124.       FrameSetView var2;
  125.       for(var2 = null; var1 != null; var1 = var1.getParent()) {
  126.          if (var1 instanceof FrameSetView) {
  127.             var2 = (FrameSetView)var1;
  128.          }
  129.       }
  130.  
  131.       if (var2 != null) {
  132.          return (JEditorPane)((View)var2).getContainer();
  133.       } else {
  134.          return null;
  135.       }
  136.    }
  137.  
  138.    public void hyperlinkUpdate(HyperlinkEvent var1) {
  139.       if (var1 instanceof HTMLFrameHyperlinkEvent) {
  140.          HTMLFrameHyperlinkEvent var2 = (HTMLFrameHyperlinkEvent)var1;
  141.          if (((HyperlinkEvent)var2).getEventType() == EventType.ACTIVATED) {
  142.             JEditorPane var3 = this.getOutermostJEditorPane();
  143.             String var4 = var2.getTarget();
  144.             if (var2.getTarget().equals("_parent") && !this.inNestedFrameSet()) {
  145.                var4 = "_top";
  146.             }
  147.  
  148.             if (var3 != null && !((JTextComponent)var3).isEditable()) {
  149.                var3.fireHyperlinkUpdate(new HTMLFrameHyperlinkEvent(var3, ((HyperlinkEvent)var2).getEventType(), ((HyperlinkEvent)var2).getURL(), ((HyperlinkEvent)var2).getDescription(), ((View)this).getElement(), var4));
  150.                if (var4.equals("_top")) {
  151.                   try {
  152.                      var3.setPage(((HyperlinkEvent)var2).getURL());
  153.                   } catch (IOException var5) {
  154.                   }
  155.                }
  156.             }
  157.          }
  158.  
  159.       }
  160.    }
  161.  
  162.    private boolean inNestedFrameSet() {
  163.       FrameSetView var1 = (FrameSetView)((View)this).getParent();
  164.       return ((View)var1).getParent() instanceof FrameSetView;
  165.    }
  166.  
  167.    public void paint(Graphics var1, Shape var2) {
  168.       Container var3 = ((View)this).getContainer();
  169.       if (var3 != null && this.htmlPane != null && this.htmlPane.isEditable() != ((JTextComponent)var3).isEditable()) {
  170.          this.editable = ((JTextComponent)var3).isEditable();
  171.          this.htmlPane.setEditable(this.editable);
  172.       }
  173.  
  174.       super.paint(var1, var2);
  175.    }
  176.  
  177.    private void setBorder() {
  178.       AttributeSet var1 = ((View)this).getElement().getAttributes();
  179.       String var2 = (String)var1.getAttribute(Attribute.FRAMEBORDER);
  180.       if (var2 != null && (var2.equals("no") || var2.equals("0"))) {
  181.          this.scroller.setBorder((Border)null);
  182.       }
  183.  
  184.    }
  185.  
  186.    private void setMargin() {
  187.       int var1 = 0;
  188.       Insets var2 = this.htmlPane.getMargin();
  189.       Insets var3 = new Insets(var2.top, var2.left, var2.right, var2.bottom);
  190.       boolean var4 = false;
  191.       AttributeSet var5 = ((View)this).getElement().getAttributes();
  192.       String var6 = (String)var5.getAttribute(Attribute.MARGINWIDTH);
  193.       if (var6 != null) {
  194.          var1 = Integer.parseInt(var6);
  195.          if (var1 > 0) {
  196.             var3.left = var1;
  197.             var3.right = var1;
  198.             var4 = true;
  199.          }
  200.       }
  201.  
  202.       var6 = (String)var5.getAttribute(Attribute.MARGINHEIGHT);
  203.       if (var6 != null) {
  204.          var1 = Integer.parseInt(var6);
  205.          if (var1 > 0) {
  206.             var3.top = var1;
  207.             var3.bottom = var1;
  208.             var4 = true;
  209.          }
  210.       }
  211.  
  212.       if (var4) {
  213.          this.htmlPane.setMargin(var3);
  214.       }
  215.  
  216.    }
  217.  
  218.    public void setParent(View var1) {
  219.       if (var1 != null) {
  220.          JTextComponent var2 = (JTextComponent)var1.getContainer();
  221.          this.editable = var2.isEditable();
  222.       }
  223.  
  224.       super.setParent(var1);
  225.    }
  226. }
  227.